In normal operation, a media file is streamed from a server computer to a client device by making multiple HTTP (Hyper-Text Transport Protocol) requests to download one or multiple segments, also known as: byte ranges or chunks, of the media file at a time. The client device may be, for example, a smart phone or desktop computer running a media player. At any time during the streaming of the media file, a user operating the media player may initiate a seek operation to start playing from anywhere inside the media file. The seek operation may be for a chunk that is forward or backward from the chunk in the media file currently being streamed when the seek operation is performed. The user typical initiates the seek operation by moving a slider on the media player.
The server computer throttles a rate of delivery of the chunks to the client device in order not to waste bandwidth. Alternatively, the server computer may stream chunks as fast as possible at a burst rate and rely on the client device to throttle the rate of delivery of the chunks.
The user may move the slider at any time when streaming a media file, hence initiating a seek operation. If the media file is being streamed at the throttle rate, a latency time, that is a time it takes for the media file to restart playing the media file at the desired point, is aggravated. On the other hand, if the media file is being streamed at the burst rate when the user move the slider, bandwidth used for previously streaming chunks may be wasted.
Accordingly, there is a need in the industry for the development of methods and systems that would mitigate latency and wasted bandwidth when streaming a multimedia file from a server to a client device.